home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet multimedia / Muzyka / Edytory sampli (probek dzwieku) / ZynAddSubFX_2.2.0 / Setup_ZynAddSubFX-2.2.0.exe / source code / UI / SUBnoteUI.fl < prev    next >
Text File  |  2005-03-14  |  16KB  |  450 lines

  1. # data file for the Fltk User Interface Designer (fluid)
  2. version 1.0105 
  3. header_name {.h} 
  4. code_name {.cc}
  5. decl {//Copyright (c) 2002-2005 Nasca Octavian Paul} {} 
  6.  
  7. decl {//License: GNU GPL version 2} {} 
  8.  
  9. decl {\#include <stdlib.h>} {public
  10.  
  11. decl {\#include <stdio.h>} {public
  12.  
  13. decl {\#include <string.h>} {public
  14.  
  15. decl {\#include "../globals.h"} {public
  16.  
  17. decl {\#include "WidgetPDial.h"} {public
  18.  
  19. decl {\#include "EnvelopeUI.h"} {public
  20.  
  21. decl {\#include "FilterUI.h"} {public
  22.  
  23. decl {\#include "../Misc/Util.h"} {public
  24.  
  25. decl {\#include "../Params/SUBnoteParameters.h"} {public
  26.  
  27. decl {\#include "PresetsUI.h"} {public
  28.  
  29. class SUBnoteharmonic {: {public Fl_Group}
  30. } {
  31.   Function {make_window()} {private
  32.   } {
  33.     Fl_Window harmonic {
  34.       xywh {329 403 90 225} type Double hide
  35.       class Fl_Group
  36.     } {
  37.       Fl_Slider mag {
  38.         callback {int x=0;
  39. if (Fl::event_button1()) x=127-(int)o->value();
  40.    else o->value(127-x);
  41. pars->Phmag[n]=x;
  42. if (pars->Phmag[n]==0) o->selection_color(0);
  43.     else o->selection_color(222);}
  44.         tooltip {harmonic's magnitude} xywh {0 15 10 115} type {Vert Knob} box FLAT_BOX selection_color 222 labelcolor 0 maximum 127 step 1 value 127
  45.         code0 {o->value(127-pars->Phmag[n]);}
  46.         code1 {if (pars->Phmag[n]==0) o->selection_color(0);}
  47.       }
  48.       Fl_Slider bw {
  49.         callback {int x=64;
  50. if (Fl::event_button1()) x=127-(int)o->value();
  51.    else o->value(x);
  52. pars->Phrelbw[n]=x;}
  53.         tooltip {harmonic's bandwidth} xywh {0 135 10 75} type {Vert Knob} box FLAT_BOX selection_color 222 maximum 127 step 1 value 64
  54.         code0 {o->value(127-pars->Phrelbw[n]);}
  55.       }
  56.       Fl_Box {} {
  57.         xywh {10 170 5 5} box FLAT_BOX color 45
  58.         code0 {if (n+1==MAX_SUB_HARMONICS) o->hide();}
  59.       }
  60.       Fl_Box {} {
  61.         label 01
  62.         xywh {0 210 10 15} labelfont 1 labelsize 9 align 20
  63.         code0 {char tmp[10];snprintf(tmp,10,"%d",n+1);o->label(strdup(tmp));}
  64.       }
  65.       Fl_Box {} {
  66.         label 01
  67.         xywh {0 0 10 15} labelfont 1 labelsize 9 align 20
  68.         code0 {char tmp[10];snprintf(tmp,10,"%d",n+1);o->label(strdup(tmp));}
  69.       }
  70.     }
  71.   }
  72.   Function {SUBnoteharmonic(int x,int y, int w, int h, const char *label=0):Fl_Group(x,y,w,h,label)} {} {
  73.     code {n=0;} {}
  74.   }
  75.   Function {init(SUBnoteParameters *pars_,int n_)} {} {
  76.     code {pars=pars_;
  77. n=n_;
  78. make_window();
  79. harmonic->show();
  80. end();} {}
  81.   }
  82.   Function {refresh()} {} {
  83.     code {mag->value(127-pars->Phmag[n]);
  84. if (pars->Phmag[n]==0) mag->selection_color(0);
  85. bw->value(127-pars->Phrelbw[n]);} {selected
  86.     }
  87.   }
  88.   Function {~SUBnoteharmonic()} {} {
  89.     code {harmonic->hide();
  90. hide();
  91. //delete(harmonic);} {}
  92.   }
  93.   decl {SUBnoteParameters *pars;} {}
  94.   decl {int n;} {}
  95.  
  96. class SUBnoteUI {: {public PresetsUI_}
  97. } {
  98.   Function {make_window()} {} {
  99.     Fl_Window SUBparameters {
  100.       label {SUBsynth Parameters}
  101.       xywh {26 214 735 390} type Double hide
  102.     } {
  103.       Fl_Scroll {} {
  104.         xywh {5 140 435 245} type HORIZONTAL box THIN_UP_BOX
  105.       } {
  106.         Fl_Pack harmonics {open
  107.           xywh {10 145 425 235} type HORIZONTAL
  108.           code0 {for (int i=0;i<MAX_SUB_HARMONICS;i++){h[i]=new SUBnoteharmonic(0,0,15,o->h(),"");h[i]->init(pars,i);}}
  109.         } {}
  110.       }
  111.       Fl_Button {} {
  112.         label Close
  113.         callback {SUBparameters->hide();}
  114.         xywh {625 365 105 20} box THIN_UP_BOX labelfont 1 labelsize 12
  115.       }
  116.       Fl_Group {} {
  117.         label AMPLITUDE
  118.         xywh {5 5 215 135} box THIN_UP_FRAME labeltype EMBOSSED_LABEL labelfont 1 align 17
  119.       } {
  120.         Fl_Value_Slider vol {
  121.           label Vol
  122.           callback {pars->PVolume=(int)o->value();}
  123.           tooltip Volume xywh {10 25 140 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 maximum 127 step 1
  124.           code0 {o->value(pars->PVolume);}
  125.         }
  126.         Fl_Value_Slider vsns {
  127.           label {V.Sns}
  128.           callback {pars->PAmpVelocityScaleFunction=(int) o->value();}
  129.           tooltip {Velocity Sensing Function (rightmost to disable)} xywh {10 45 140 15} type {Horz Knob} box FLAT_BOX labelsize 12 align 8 maximum 127 step 1
  130.           code0 {o->value(pars->PAmpVelocityScaleFunction);}
  131.         }
  132.         Fl_Dial pan {
  133.           label Pan
  134.           callback {pars->PPanning=(int) o->value();}
  135.           tooltip {Panning (leftmost is Random)} xywh {185 20 30 30} box ROUND_UP_BOX labelsize 11 maximum 127 step 1
  136.           code0 {o->value(pars->PPanning);}
  137.           class WidgetPDial
  138.         }
  139.         Fl_Group ampenv {
  140.           label {SUBsynth - Amplitude Envelope} open
  141.           xywh {10 65 205 70} box FLAT_BOX color 51 align 144
  142.           code0 {o->init(pars->AmpEnvelope);}
  143.           class EnvelopeUI
  144.         } {}
  145.       }
  146.       Fl_Group {} {
  147.         xywh {495 325 235 35} box THIN_UP_FRAME
  148.       } {
  149.         Fl_Counter filterstages {
  150.           label {Filter Stages}
  151.           callback {pars->Pnumstages=(int) o->value();}
  152.           tooltip {How many times the noise is filtered} xywh {515 340 45 15} type Simple labelfont 1 labelsize 10 align 1 minimum 1 maximum 5 step 1 textsize 10
  153.           code0 {o->value(pars->Pnumstages);}
  154.         }
  155.         Fl_Choice magtype {
  156.           label {Mag.Type}
  157.           callback {pars->Phmagtype=(int) o->value();}
  158.           xywh {585 340 65 15} down_box BORDER_BOX labelfont 1 labelsize 10 align 1 textsize 12
  159.           code0 {o->value(pars->Phmagtype);}
  160.         } {
  161.           menuitem {} {
  162.             label Linear
  163.             xywh {20 20 100 20} labelfont 1 labelsize 12
  164.           }
  165.           menuitem {} {
  166.             label {-40dB}
  167.             xywh {30 30 100 20} labelfont 1 labelsize 12
  168.           }
  169.           menuitem {} {
  170.             label {-60dB}
  171.             xywh {40 40 100 20} labelfont 1 labelsize 12
  172.           }
  173.           menuitem {} {
  174.             label {-80dB}
  175.             xywh {50 50 100 20} labelfont 1 labelsize 12
  176.           }
  177.           menuitem {} {
  178.             label {-100dB}
  179.             xywh {60 60 100 20} labelfont 1 labelsize 12
  180.           }
  181.         }
  182.         Fl_Choice start {
  183.           label Start
  184.           callback {pars->Pstart=(int) o->value();} open
  185.           xywh {670 340 50 15} down_box BORDER_BOX labelfont 1 labelsize 10 align 1 textsize 12
  186.           code0 {o->value(pars->Pstart);}
  187.         } {
  188.           menuitem {} {
  189.             label Zero
  190.             xywh {30 30 100 20} labelfont 1 labelsize 12
  191.           }
  192.           menuitem {} {
  193.             label RND
  194.             xywh {40 40 100 20} labelfont 1 labelsize 12
  195.           }
  196.           menuitem {} {
  197.             label {Max.}
  198.             xywh {50 50 100 20} labelfont 1 labelsize 12
  199.           }
  200.         }
  201.       }
  202.       Fl_Group freqsettingsui {
  203.         label FREQUENCY
  204.         xywh {440 5 290 135} box THIN_UP_FRAME labeltype EMBOSSED_LABEL labelfont 1 align 17
  205.       } {
  206.         Fl_Group freqenvelopegroup {
  207.           label {SUBsynth - Frequency Envelope} open
  208.           xywh {445 65 205 70} box FLAT_BOX color 51 align 144
  209.           code0 {o->init(pars->FreqEnvelope);}
  210.           code1 {if (pars->PFreqEnvelopeEnabled==0) o->deactivate();}
  211.           class EnvelopeUI
  212.         } {}
  213.         Fl_Check_Button freqee {
  214.           label Enabled
  215.           callback {pars->PFreqEnvelopeEnabled=o->value();
  216. if (o->value()==0) freqenvelopegroup->deactivate();
  217.     else freqenvelopegroup->activate();
  218. o->show();
  219. freqsettingsui->redraw();}
  220.           xywh {445 68 55 15} down_box DOWN_BOX labelfont 1 labelsize 10
  221.           code0 {o->value(pars->PFreqEnvelopeEnabled);}
  222.         }
  223.         Fl_Counter octave {
  224.           label Octave
  225.           callback {int k=(int) o->value();
  226. if (k<0) k+=16;
  227. pars->PCoarseDetune = k*1024+
  228.    pars->PCoarseDetune%1024;}
  229.           tooltip Octave xywh {670 50 45 15} type Simple labelsize 10 align 1 minimum -8 maximum 7 step 1 textfont 1 textsize 12
  230.           code0 {int k=pars->PCoarseDetune/1024;if (k>=8) k-=16;}
  231.           code2 {o->value(k);}
  232.         }
  233.         Fl_Counter coarsedet {
  234.           label {Coarse Det.}
  235.           callback {int k=(int) o->value();
  236. if (k<0) k+=1024;
  237. pars->PCoarseDetune = k+
  238.    (pars->PCoarseDetune/1024)*1024;}
  239.           tooltip {Coarse Detune} xywh {655 115 60 20} labelsize 11 align 1 minimum -64 maximum 63 step 1 textfont 1 textsize 12
  240.           code0 {int k=pars->PCoarseDetune%1024;if (k>=512) k-=1024;}
  241.           code2 {o->value(k);}
  242.           code3 {o->lstep(10);}
  243.         }
  244.         Fl_Slider detune {
  245.           callback {pars->PDetune=(int)o->value()+8192;
  246. detunevalueoutput->do_callback();}
  247.           tooltip {Fine Detune (cents)} xywh {495 25 230 15} type {Horz Knob} box FLAT_BOX minimum -8192 maximum 8191 step 1
  248.           code0 {o->value(pars->PDetune-8192);}
  249.         }
  250.         Fl_Value_Output detunevalueoutput {
  251.           label Detune
  252.           callback {o->value(getdetune(pars->PDetuneType,0,pars->PDetune));}
  253.           xywh {448 25 45 15} labelsize 10 align 5 minimum -5000 maximum 5000 step 0.01 textfont 1 textsize 10
  254.           code0 {o->value(getdetune(pars->PDetuneType,0,pars->PDetune));}
  255.         }
  256.         Fl_Check_Button hz440 {
  257.           label 440Hz
  258.           callback {int x=(int) o->value();
  259. pars->Pfixedfreq=x;
  260. if (x==0) fixedfreqetdial->deactivate();
  261.    else fixedfreqetdial->activate();}
  262.           tooltip {set the base frequency to 440Hz} xywh {555 45 50 15} down_box DOWN_BOX labelfont 1 labelsize 11
  263.           code0 {o->value(pars->Pfixedfreq);}
  264.         }
  265.         Fl_Dial fixedfreqetdial {
  266.           label {Eq.T.}
  267.           callback {pars->PfixedfreqET=(int) o->value();}
  268.           tooltip {How the frequency varies acording to the keyboard (leftmost for fixed frequency)} xywh {610 45 15 15} box ROUND_UP_BOX labelsize 10 align 8 maximum 127 step 1
  269.           code0 {o->value(pars->PfixedfreqET);}
  270.           code1 {if (pars->Pfixedfreq==0) o->deactivate();}
  271.           class WidgetPDial
  272.         }
  273.         Fl_Choice detunetype {
  274.           label {Detune Type}
  275.           callback {pars->PDetuneType=(int) o->value()+1;
  276. detunevalueoutput->do_callback();} open
  277.           xywh {655 85 70 15} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10
  278.           code0 {o->add("L35cents");o->add("L10cents");o->add("E100cents");o->add("E1200cents");}
  279.           code1 {o->value(pars->PDetuneType-1);}
  280.         } {}
  281.       }
  282.       Fl_Check_Button stereo {
  283.         label Stereo
  284.         callback {pars->Pstereo=(int) o->value();}
  285.         xywh {440 325 55 35} box THIN_UP_BOX down_box DOWN_BOX labelfont 1 labelsize 10
  286.         code0 {o->value(pars->Pstereo);}
  287.       }
  288.       Fl_Button {} {
  289.         label Clear
  290.         callback {for (int i=0;i<MAX_SUB_HARMONICS;i++){
  291.     h[i]->mag->value(127);
  292.     pars->Phmag[i]=0;
  293.     h[i]->bw->value(64);
  294.     pars->Phrelbw[i]=64;
  295. };
  296. pars->Phmag[0]=127;
  297. h[0]->mag->value(0);
  298. SUBparameters->redraw();}
  299.         tooltip {Clear the harmonics} xywh {445 365 70 20} box THIN_UP_BOX labelfont 1 labelsize 12
  300.       }
  301.       Fl_Group bandwidthsettingsui {
  302.         label BANDWIDTH
  303.         xywh {220 5 220 135} box THIN_UP_FRAME labeltype EMBOSSED_LABEL labelfont 1 align 17
  304.       } {
  305.         Fl_Group bandwidthenvelopegroup {
  306.           label {SUBsynth - BandWidth Envelope} open
  307.           xywh {225 65 205 70} box FLAT_BOX color 51 align 144
  308.           code0 {o->init(pars->BandWidthEnvelope);}
  309.           code1 {if (pars->PBandWidthEnvelopeEnabled==0) o->deactivate();}
  310.           class EnvelopeUI
  311.         } {}
  312.         Fl_Check_Button bwee {
  313.           label Enabled
  314.           callback {pars->PBandWidthEnvelopeEnabled=o->value();
  315. if (o->value()==0) bandwidthenvelopegroup->deactivate();
  316.     else bandwidthenvelopegroup->activate();
  317. o->show();
  318. bandwidthsettingsui->redraw();}
  319.           xywh {225 67 55 15} down_box DOWN_BOX labelfont 1 labelsize 10
  320.           code0 {o->value(pars->PBandWidthEnvelopeEnabled);}
  321.         }
  322.         Fl_Value_Slider bandwidth {
  323.           label {Band Width}
  324.           callback {pars->Pbandwidth=(int) o->value();}
  325.           xywh {225 40 115 15} type {Horz Knob} box FLAT_BOX labelsize 10 align 1 maximum 127 step 1
  326.           code0 {o->value(pars->Pbandwidth);}
  327.         }
  328.         Fl_Value_Slider bwidthscale {
  329.           label {B.Width Scale}
  330.           callback {pars->Pbwscale=(int) o->value()+64;}
  331.           tooltip {How much I increase the BandWidth according to lower/higher harmonics} xywh {345 40 90 15} type {Horz Knob} box FLAT_BOX labelsize 10 align 1 minimum -64 maximum 63 step 1
  332.           code0 {o->value(pars->Pbwscale-64);}
  333.         }
  334.       }
  335.       Fl_Group globalfiltergroup {
  336.         label FILTER
  337.         xywh {440 140 290 185} box THIN_UP_FRAME labeltype EMBOSSED_LABEL labelfont 1 labelsize 16 align 17
  338.         code0 {if (pars->PGlobalFilterEnabled==0) o->deactivate();}
  339.       } {
  340.         Fl_Group filterenv {
  341.           label {SUBsynth - Filter Envelope} open
  342.           xywh {445 250 275 70} box FLAT_BOX color 51 align 144
  343.           code0 {o->init(pars->GlobalFilterEnvelope);}
  344.           class EnvelopeUI
  345.         } {}
  346.         Fl_Group filterui {
  347.           label {SUBsynthl - Filter} open
  348.           xywh {445 170 275 75} box FLAT_BOX color 50 align 144
  349.           code0 {o->init(pars->GlobalFilter,&pars->PGlobalFilterVelocityScale,&pars->PGlobalFilterVelocityScaleFunction);}
  350.           class FilterUI
  351.         } {}
  352.       }
  353.       Fl_Check_Button filtere {
  354.         label Enabled
  355.         callback {pars->PGlobalFilterEnabled=o->value();
  356. if (o->value()==0) globalfiltergroup->deactivate();
  357.     else globalfiltergroup->activate();
  358. o->show();
  359. globalfiltergroup->redraw();}
  360.         xywh {445 145 85 20} down_box DOWN_BOX labelfont 1 labelsize 12
  361.         code0 {o->value(pars->PGlobalFilterEnabled);}
  362.       }
  363.       Fl_Button {} {
  364.         label C
  365.         callback {presetsui->copy(pars);}
  366.         xywh {540 370 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
  367.       }
  368.       Fl_Button {} {
  369.         label P
  370.         callback {presetsui->paste(pars,this);}
  371.         xywh {570 370 25 15} box THIN_UP_BOX color 179 labelfont 1 labelsize 12 labelcolor 7
  372.       }
  373.     }
  374.   }
  375.   Function {refresh()} {} {
  376.     code {for (int i=0;i<MAX_SUB_HARMONICS;i++) h[i]->refresh();
  377. vol->value(pars->PVolume);
  378. vsns->value(pars->PAmpVelocityScaleFunction);
  379. pan->value(pars->PPanning);
  380.  
  381.  
  382. bandwidth->value(pars->Pbandwidth);
  383. bwidthscale->value(pars->Pbwscale-64);
  384. bwee->value(pars->PBandWidthEnvelopeEnabled);
  385. if (pars->PBandWidthEnvelopeEnabled==0) bandwidthenvelopegroup->deactivate();
  386.     else bandwidthenvelopegroup->activate();
  387. bwee->show();
  388. bandwidthsettingsui->redraw();
  389.  
  390. detunevalueoutput->value(getdetune(pars->PDetuneType,0,pars->PDetune));
  391. freqee->value(pars->PFreqEnvelopeEnabled);
  392. if (pars->PFreqEnvelopeEnabled==0) freqenvelopegroup->deactivate();
  393.     else freqenvelopegroup->activate();
  394. freqee->show();
  395. freqsettingsui->redraw();
  396.  
  397. detune->value(pars->PDetune-8192);
  398. hz440->value(pars->Pfixedfreq);
  399.  
  400. fixedfreqetdial->value(pars->PfixedfreqET);
  401.  
  402. int k=pars->PCoarseDetune/1024;if (k>=8) k-=16;
  403. octave->value(k);
  404.  
  405. detunetype->value(pars->PDetuneType-1);
  406.  
  407. k=pars->PCoarseDetune%1024;if (k>=512) k-=1024;
  408. coarsedet->value(k);
  409.  
  410. filtere->value(pars->PGlobalFilterEnabled);
  411. if (pars->PGlobalFilterEnabled==0) globalfiltergroup->deactivate();
  412.     else globalfiltergroup->activate();
  413. filtere->show();
  414. globalfiltergroup->redraw();
  415.  
  416. stereo->value(pars->Pstereo);
  417. filterstages->value(pars->Pnumstages);
  418. magtype->value(pars->Phmagtype);
  419. start->value(pars->Pstart);
  420.  
  421. ampenv->refresh();
  422. bandwidthenvelopegroup->refresh();
  423. freqenvelopegroup->refresh();
  424. filterui->refresh();
  425. filterenv->refresh();} {}
  426.   }
  427.   Function {SUBnoteUI(SUBnoteParameters *parameters)} {} {
  428.     code {pars=parameters;
  429. make_window();} {}
  430.   }
  431.   Function {~SUBnoteUI()} {} {
  432.     code {//for (int i=0;i<MAX_SUB_HARMONICS;i++) delete (h[i]);
  433. SUBparameters->hide();
  434. delete(SUBparameters);} {}
  435.   }
  436.   decl {SUBnoteParameters *pars;} {}
  437.   decl {SUBnoteharmonic *h[MAX_SUB_HARMONICS];} {}
  438.